# -*- coding: utf-8 -*-
# @日期 : 2022/1/27 0027
# @作者 : sean
# @版本 : v1.0
# @功能 :
import re

# findall: 匹配字符串中所有的符合正则的内容
lst = re.findall(r'\d+', "我的手机号10010，我老婆手机号10086")
print(lst, '\r\n')

# finditer: 匹配字符串中所有的符合正则的内容[返回迭代器],效率较高
it = re.finditer(r'\d+', "我的手机号10010，我老婆手机号10086")
# rint(lst)
for i in it:
    # print(i)
    print(i.group())  # 从迭代器中拿取内容需要.group()

# search: 返回的是第一个match对象（找到结果就返回），拿数据需要.group()
s = re.search(r'\d+', "我的手机号10010，我老婆手机号10086")
print(s.group(), '\r\n')

# match 从头开始匹配
match_s = re.match(r'\d+', "我的手机号10010，我老婆手机号10086")
print(match_s, '\r\n')

# 预加载正则表达式 正则需要反复调用可以预先加载正则表达式
obj = re.compile(r'\d+')  # 可以用obj替换re
it_1 = obj.finditer('我的手机号10010，我老婆手机号10086')
for i in it_1:
    print(i.group())

# re.S 扩展. 让其扩展换行符，即使要匹配的字符串中有换行也能匹配
#    (?P<分组名字>正则)  命名分组aaa 值为  .*?匹配的内容
html_str = '''
<div>
<div class='jay'><span id='1'>a</span></div>
<div class='jay1'><span id='2'>b</span></div>
<div class='jay2'><span id='3'>c</span></div>
<div class='jay3'><span id='4'>d</span></div>
<div class='jay4'><span id='s'>ef</span></div>

'''
obj = re.compile(r"<div class='.*?'><span id='\d+'>(?P<aaa>.*?)</span></div>", re.S)  # re.S 能让.匹配换行符
obj_str = obj.finditer(html_str)
for i in obj_str:
    print(i.group())
    print(i.group("aaa"))
